package com.dtp.extension.limiter.redis.ratelimiter;

import org.springframework.data.redis.core.script.RedisScript;

import java.util.List;

/**
 * Redis限流器
 *
 * @param <T>
 * @author yanhom
 * @since 1.0.8
 *
 * @remark muse
 **/
public interface RedisRateLimiter<T> {

    /** 获得Redis脚本*/
    RedisScript<T> getScript();

    /** 获得key的集合 */
    List<String> getKeys(String key);

    /** 是否被允许 */
    T isAllowed(String key, long windowSize, int limit);
}
